package com.atguigu.gulimall.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

import java.util.Arrays;

/**
 * 这个类是用来配置跨域的，我们需要在网关层配置跨域，以便让前端可以访问我们的服务。
 */
@Configuration //注解配置类
public class GulimallCorsConfiguration {

    //创建CorsWebFilter过滤器的bean实例对象，实现所有请求一进来我们就放行，请求一执行完后，在将响应数据返回给浏览器之前，我们给请求里边添加如上所示的响应头
    @Bean
    public CorsWebFilter corsWebFilter() {


        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();

        //1、配置跨域
        //允许所有请求头都可以进行跨域访问
        corsConfiguration.addAllowedHeader("*");

        //所有的请求方式Get或Post等都可以进行跨域访问
        corsConfiguration.addAllowedMethod("*");

        //任意来源的请求都能进行跨域访问
//        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.setAllowedOriginPatterns(Arrays.asList("*"));
        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsWebFilter(source);
    }
}
